package com.ztgf.pay.models.service;

import com.baomidou.mybatisplus.service.IService;
import com.ztgf.common.constant.Result;
import com.ztgf.pay.models.bo.*;
import com.ztgf.pay.models.dto.PayOrderDTO;
import com.ztgf.pay.models.dto.PayOrderMotherDTO;
import com.ztgf.pay.models.dto.PayUserDTO;
import com.ztgf.pay.models.vo.PayBatchPrintVO;

import java.util.List;

/**
 * 支付订单服务
 *
 * @author mxli
 * @Date 2020-07-30 12:12:21
 */
public interface IPayOrderService extends IService<PayOrderDTO> {

    /**
     * 网银支付
     *
     * @param saveBO
     * @return
     */
    Result<PayOrderMotherDTO> saveOnlineBankPay(PayOrderMotherSaveBO saveBO);

    /**
     * 余额支付
     *
     * @param saveBO
     * @return
     */
    Result<List<PayOrderDTO>> saveBalancePay(PayOrderMotherSaveBO saveBO);


    /**
     * 保存查询网银支付状态
     *
     * @param motherDTO
     */
    void saveOnlineBankPayLog(PayOrderMotherDTO motherDTO);

    /**
     * 保存查询余额支付状态
     *
     * @param orderDTO
     */
    void saveBalancePayLog(PayOrderDTO orderDTO);


    /**
     * 保存查询网银支付状态
     *
     * @param motherId
     */
    Result<String> getOnlineBankPayLog(Long motherId);

    /**
     * 保存查询余额支付状态
     *
     * @param orderId
     */
    Result<String> getBalancePayLog(Long orderId);


    /**
     * 根据订单ID查询电子回执单
     *
     * @param orderId orderId
     * @param userId  userId
     * @return 回执单URL
     */
    List<String> printingElectronicReceipt(String orderId, String userId, String date);

//    void saveNoWithdrawMoney(Long uesrId);

    /**
     * 根据订单ID批量打印电子回执单
     *
     * @param list list
     * @return PayBatchPrintVO
     */
    PayBatchPrintVO printingBatchElectronicReceipt(List<PayBatchPrintBO> list);

    /**
     * 根据备注批量打印电子回执单
     *
     * @param list list
     * @return PayBatchPrintVO
     */
    PayBatchPrintVO printingBatchElectronicReceiptByDetail(List<PayBatchByRemarksBO> list);

    /**
     * admin根据备注批量打印电子回执单
     *
     * @param list list
     * @return PayBatchPrintVO
     */
    PayBatchPrintVO printingBatchElectronicReceiptByDetailAdmin(List<PayBatchByRemarksBO> list);

    /**
     * 根据备注单个打印电子回执单
     *
     * @param payBatchByRemarksBO payBatchByRemarksBO
     * @return PayBatchPrintVO
     */
    PayBatchPrintVO printingSingleElectronicReceiptByDetail(PayBatchByRemarksBO payBatchByRemarksBO);
    /**
     * admin根据备注单个打印电子回执单
     *
     * @param payBatchByRemarksBO payBatchByRemarksBO
     * @return PayBatchPrintVO
     */
    PayBatchPrintVO printingSingleElectronicReceiptByDetailAdmin(PayBatchByRemarksBO payBatchByRemarksBO);
}
